import javax.swing.Timer;
import java.awt.event.*;
import java.util.*;

class Taktgeber implements ActionListener
{
    private Timer timer;
    protected List<Controller> steuerungen;

    /**
     * Erzeugt den Taktgeber und tr&auml;gt als Parameter den Taktempf&auml;nger ein.
     */
    Taktgeber (int millisec)
    {
        timer = new Timer(millisec, this);
        steuerungen = new ArrayList<Controller>();
        
    }
    
    public void steuerungHinzufuegen(Controller steuerung) {
        steuerungen.add(steuerung);
    }

    /**
     * vom Timer aufgerufen
     * erh&ouml;ht die Simulationszeit und benachrichtigt alle eingetragenen Objekte
     * @param evt der Timerevent
     */
    public void actionPerformed (ActionEvent evt)
    {
        for (Controller c : steuerungen) {
           c.taktSchalten();
        }
        
      
    }

    /**
     * Ablaufgeschwindigkeit einstellen
     * @param dauer: Angabe in Millisekunden
     */
    void taktdauerSetzen (int dauer) { timer.setDelay(dauer); }
    void starten () { timer.start (); }
    void anhalten () { timer.stop (); }
}